package base;

import java.io.File;
import java.lang.management.ManagementFactory;

import org.eclipse.jetty.jmx.MBeanContainer;
import org.eclipse.jetty.security.HashLoginService;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AllowSymLinkAliasChecker;
import org.eclipse.jetty.webapp.WebAppContext;
import org.junit.Test;

public class ServerStart {

	@Test
	public void start() throws Exception {
		
		if (1 == 1) {
			
			System.out.println(System.getenv("org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"));
			return;
		}
		Server server = new Server(8082);
		
		//JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面，比如清空缓存、重新加载配置文件等
		MBeanContainer mBeanContainer = new MBeanContainer(
				ManagementFactory.getPlatformMBeanServer());
		server.addBean(mBeanContainer);
		
		WebAppContext webapp = new WebAppContext();
		webapp.setContextPath("/");
		File warFile = new File("src/main/resources/" + "dubbo-admin-2.5.4.war");
		//File warFile = new File(ClassLoader.getSystemResource(properties.get("webname").toString()).toURI());
		webapp.setWar(warFile.getAbsolutePath());
		webapp.addAliasCheck(new AllowSymLinkAliasChecker());
		
		//web程序中配置了以上跟登录相关的，需要加上以下代码才可以启动，否则会报NoLoginService错误。或者给web程序加个jetty.xml
	    HashLoginService dummyLoginService = new HashLoginService("TEST-SECURITY-REALM");   
	    webapp.getSecurityHandler().setLoginService(dummyLoginService);
	    
		server.setHandler(webapp);
		
		server.start();
		server.join();
	}
}
